import axios from '../config/axios.default.config'
import globalApi from '@/config/globalApi'

export default class BlogService {
  /**
   * 发表博客
   * @param blogData 文章数据
   * @return {Promise<axios.AxiosResponse<any>>} 发布结果
   */
  static createBlog(blogData) {
    return axios.post(`${globalApi.createBlog}`, blogData)
  }

  /**
   * 删除博客文章
   * @param blogId 文章 id
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static deleteBlog(blogId) {
    return axios.delete(`${globalApi.deleteBlog}/${blogId}`)
  }

  /**
   * 获取已过审且非黑名单的所有文章列表
   * @param args 查询参数
   * @return {Promise<axios.AxiosResponse<any>>} 博客列表
   */
  static getPublicBlogs(args) {
    return axios.get(`${globalApi.getPublicBlogs}`, { params: args })
  }

  /**
   * 查询好友动态信息
   * @param args
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getMyAttentionArts(args) {
    return axios.get(`${globalApi.getAttentionArts}`, { params: args })
  }

  /**
   * 获取自己的所有文章
   * @param args 查询参数
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getMyBlogs(args) {
    return axios.get(`${globalApi.getMyBlogs}`, { params: args })
  }

  /**
   * 获取所有点赞过的文章
   * @param args 查询参数
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getLikedBlogs(args) {
    return axios.get(`${globalApi.getLikedBlogs}`, { params: args })
  }

  /**
   * 获取所有评论过的文章
   * @param args 查询参数
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getCommentedBlogs(args) {
    return axios.get(`${globalApi.getCommentedBlogs}`, { params: args })
  }

  /**
   * 根据文章 id 获取文章详情
   * @param args
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getArticleDetailsById(args) {
    return axios.get(`${globalApi.getArticleDetails}`, { params: args })
  }

  /**
   * 获取文章评论信息
   * @param args 文章 id
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static getArticleComments(args) {
    return axios.get(`${globalApi.getArticleComments}`, { params: args })
  }

  /**
   * 创建一级评论
   * @param commentData 评论数据
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static createComment(commentData) {
    return axios.post(`${globalApi.commentsOpt}`, commentData)
  }

  /**
   * 删除一级评论
   * @param commentData 评论信息
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static deleteComment(commentData) {
    return axios.delete(
      `${globalApi.commentsOpt}/${commentData.blogId}/${commentData.author_id}/${commentData.commentId}`
    )
  }

  /**
   * 创建回复
   * @param replyData 回复数据
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static createReply(replyData) {
    return axios.post(`${globalApi.replyOpt}`, replyData)
  }

  /**
   * 删除一条回复
   * @param replyData 待删除的回复信息
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static deleteReply(replyData) {
    return axios.delete(
      `${globalApi.replyOpt}/${replyData.blogId}/${replyData.parentId}/${replyData.commentId}`
    )
  }

  /**
   * 对评论点赞
   * @param data
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static setCommentLike(data) {
    return axios.post(`${globalApi.commentLikes}`, data)
  }

  /**
   * 对评论取消点赞
   * @param data
   * @return {Promise<axios.AxiosResponse<any>>}
   */
  static unSetCommentLike(data) {
    return axios.delete(`${globalApi.commentLikes}`, { data })
  }
}
